package com.ants.project.core.utils;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * 获取token 解密token
 * 先加密base64 在进行des3加密
 * 根据用户ID 用户账号 时间戳加密
 * Created by zhituliu on 2016/3/27.
 */
public class TokenUtil {

    private static final Logger logger = LoggerFactory.getLogger(TokenUtil.class);

    enum Token {
        userid //用户id
        , username  //用户账号
        , timespan; //时间戳
    }

    /**
     * 账号密码生成token信息
     * @param userid 用户ID
     * @param username 用户账号
     * @param time 时间戳
     * @return
     */
    public static String getToken(String userid, String username, long time) {
        try {
            return StringEncryptUtil.encode(userid + "_" + username + "_" + time);
        } catch (Exception e) {
            logger.error("获取加密token令牌失败!", e.getMessage());
            return null;
        }

    }

    /**
     * 获取token信息
     *
     * @param token
     * @return
     */
    public static Map decodeToken(String token) {
        Map map = new HashMap();
        try {
            String userinfo = StringEncryptUtil.decode(token);
            String[] str = userinfo.split("_");
            map.put(Token.userid, str[0]);
            map.put(Token.username, str[1]);
            map.put(Token.timespan, str[2]);
            return map;
        } catch (Exception e) {
            logger.error("解密token令牌失败!", e.getMessage());
            return null;
        }
    }
}
